package com.zy.mq;

import com.zy.mq.domain.JMSFactory;

import javax.jms.*;

public class ClientProvider {


    public static void main(String[] args) {

    }


    /**
     * P2P的特点

        1 每个消息只有一个消费者（Consumer）(即一旦被消费，消息就不再在消息队列中)
        2 发送者和接收者之间在时间上没有依赖性，也就是说当发送者发送了消息之后，不管接收者有没有正在运行，它不会影响到消息被发送到队列
        3 接收者在成功接收消息之后需向队列应答成功
         如果你希望发送的每个消息都应该被成功处理的话，那么你需要P2P模式。
     */
    public static void jmsP2pMessage(){
        //通过工厂获取连接
        Connection connection=null;
        try{
            connection= JMSFactory.getConn();
            //启动连接
            connection.start();
            //创建session会话
            Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //创建消息队列
            Destination queue = session.createQueue("hello");
            //创建消息提供者
            MessageProducer producer = session.createProducer(queue);
            sendMessage(session,producer);
            session.commit();
            session.close();
        }catch (JMSException e){
            e.printStackTrace();
        }finally {
            if(connection!=null){
                try {
                    connection.close();
                }catch (JMSException e){
                    e.printStackTrace();
                }
            }
        }
    }

    public static void sendMessage(Session session,MessageProducer producer)throws JMSException{
        for (int i = 0; i < 10; i++) {
            TextMessage textMessage = session.createTextMessage("发送消息:" + i);
            producer.send(textMessage);
        }
    }
}
